<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Global Body Planner: GlobalBodyPlanner Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Global Body Planner
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classGlobalBodyPlanner-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">GlobalBodyPlanner Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>A global body planning class for legged robots.  
 <a href="classGlobalBodyPlanner.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="global__body__planner_8h_source.html">global_body_planner.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for GlobalBodyPlanner:</div>
<div class="dyncontent">
<div class="center"><img src="classGlobalBodyPlanner__coll__graph.png" border="0" usemap="#GlobalBodyPlanner_coll__map" alt="Collaboration graph"/></div>
<map name="GlobalBodyPlanner_coll__map" id="GlobalBodyPlanner_coll__map">
<area shape="rect" id="node2" href="classFastTerrainMap.html" title="A terrain map class built for fast and efficient sampling. " alt="" coords="15,5,129,32"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ae1cc3ec1e77b13cdf679267c4a8e55b4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#ae1cc3ec1e77b13cdf679267c4a8e55b4">GlobalBodyPlanner</a> (ros::NodeHandle nh)</td></tr>
<tr class="memdesc:ae1cc3ec1e77b13cdf679267c4a8e55b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for <a class="el" href="classGlobalBodyPlanner.html" title="A global body planning class for legged robots. ">GlobalBodyPlanner</a> Class.  <a href="#ae1cc3ec1e77b13cdf679267c4a8e55b4">More...</a><br /></td></tr>
<tr class="separator:ae1cc3ec1e77b13cdf679267c4a8e55b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d255bb8030cedc5b8ef166dc1e9710a"><td class="memItemLeft" align="right" valign="top"><a id="a9d255bb8030cedc5b8ef166dc1e9710a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a9d255bb8030cedc5b8ef166dc1e9710a">callPlanner</a> ()</td></tr>
<tr class="memdesc:a9d255bb8030cedc5b8ef166dc1e9710a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call the correct planning class and compute statistics. <br /></td></tr>
<tr class="separator:a9d255bb8030cedc5b8ef166dc1e9710a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0c9fffeaea60900b04ba017e1d1c4ec"><td class="memItemLeft" align="right" valign="top"><a id="af0c9fffeaea60900b04ba017e1d1c4ec"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#af0c9fffeaea60900b04ba017e1d1c4ec">spin</a> ()</td></tr>
<tr class="memdesc:af0c9fffeaea60900b04ba017e1d1c4ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Primary work function in class, called in node file for this component. <br /></td></tr>
<tr class="separator:af0c9fffeaea60900b04ba017e1d1c4ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:a209eb08a4c8c9e51b88c4039a6cfbd12"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a209eb08a4c8c9e51b88c4039a6cfbd12">terrainMapCallback</a> (const grid_map_msgs::GridMap::ConstPtr &amp;msg)</td></tr>
<tr class="memdesc:a209eb08a4c8c9e51b88c4039a6cfbd12"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback function to handle new terrain map data.  <a href="#a209eb08a4c8c9e51b88c4039a6cfbd12">More...</a><br /></td></tr>
<tr class="separator:a209eb08a4c8c9e51b88c4039a6cfbd12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47647aac82b1cf87115d8cc4639000c5"><td class="memItemLeft" align="right" valign="top"><a id="a47647aac82b1cf87115d8cc4639000c5"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a47647aac82b1cf87115d8cc4639000c5">setStartAndGoalStates</a> ()</td></tr>
<tr class="memdesc:a47647aac82b1cf87115d8cc4639000c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the start and goal states of the planner. <br /></td></tr>
<tr class="separator:a47647aac82b1cf87115d8cc4639000c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2eb81f4bee8cec49686f963cd0251b51"><td class="memItemLeft" align="right" valign="top"><a id="a2eb81f4bee8cec49686f963cd0251b51"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a2eb81f4bee8cec49686f963cd0251b51">clearPlan</a> ()</td></tr>
<tr class="memdesc:a2eb81f4bee8cec49686f963cd0251b51"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the plan member variables. <br /></td></tr>
<tr class="separator:a2eb81f4bee8cec49686f963cd0251b51"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ce4b6fab5302a7b110850deef679806"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a5ce4b6fab5302a7b110850deef679806">addBodyStateToMsg</a> (double t, State body_state, global_body_planner::BodyPlan &amp;body_plan_msg)</td></tr>
<tr class="memdesc:a5ce4b6fab5302a7b110850deef679806"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update the body plan with the current plan.  <a href="#a5ce4b6fab5302a7b110850deef679806">More...</a><br /></td></tr>
<tr class="separator:a5ce4b6fab5302a7b110850deef679806"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ef31af306895c311faee09a7023896b"><td class="memItemLeft" align="right" valign="top"><a id="a7ef31af306895c311faee09a7023896b"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a7ef31af306895c311faee09a7023896b">publishPlan</a> ()</td></tr>
<tr class="memdesc:a7ef31af306895c311faee09a7023896b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Publish the current body plan. <br /></td></tr>
<tr class="separator:a7ef31af306895c311faee09a7023896b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a022a47eb17c660b2c3984def62c613a3"><td class="memItemLeft" align="right" valign="top"><a id="a022a47eb17c660b2c3984def62c613a3"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a022a47eb17c660b2c3984def62c613a3">waitForMap</a> ()</td></tr>
<tr class="memdesc:a022a47eb17c660b2c3984def62c613a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait until a map message has been received and processed. <br /></td></tr>
<tr class="separator:a022a47eb17c660b2c3984def62c613a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:adb8189fbb2d0372db2eb06ee6ea67d11"><td class="memItemLeft" align="right" valign="top"><a id="adb8189fbb2d0372db2eb06ee6ea67d11"></a>
ros::Subscriber&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#adb8189fbb2d0372db2eb06ee6ea67d11">terrain_map_sub_</a></td></tr>
<tr class="memdesc:adb8189fbb2d0372db2eb06ee6ea67d11"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subscriber for terrain map messages. <br /></td></tr>
<tr class="separator:adb8189fbb2d0372db2eb06ee6ea67d11"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b7373f6e544a844dc1d09f296d92e1c"><td class="memItemLeft" align="right" valign="top"><a id="a5b7373f6e544a844dc1d09f296d92e1c"></a>
ros::Publisher&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a5b7373f6e544a844dc1d09f296d92e1c">body_plan_pub_</a></td></tr>
<tr class="memdesc:a5b7373f6e544a844dc1d09f296d92e1c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Publisher for body plan messages. <br /></td></tr>
<tr class="separator:a5b7373f6e544a844dc1d09f296d92e1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ea26e9a8e1c02818d9e84484565e267"><td class="memItemLeft" align="right" valign="top"><a id="a9ea26e9a8e1c02818d9e84484565e267"></a>
ros::Publisher&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a9ea26e9a8e1c02818d9e84484565e267">discrete_body_plan_pub_</a></td></tr>
<tr class="memdesc:a9ea26e9a8e1c02818d9e84484565e267"><td class="mdescLeft">&#160;</td><td class="mdescRight">Publisher for discrete states in body plan messages. <br /></td></tr>
<tr class="separator:a9ea26e9a8e1c02818d9e84484565e267"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed259cd32b2a44277be294e981093d36"><td class="memItemLeft" align="right" valign="top"><a id="aed259cd32b2a44277be294e981093d36"></a>
ros::NodeHandle&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#aed259cd32b2a44277be294e981093d36">nh_</a></td></tr>
<tr class="memdesc:aed259cd32b2a44277be294e981093d36"><td class="mdescLeft">&#160;</td><td class="mdescRight">Nodehandle to pub to and sub from. <br /></td></tr>
<tr class="separator:aed259cd32b2a44277be294e981093d36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae58fd1f832f4d71fde0c8feb2f837d58"><td class="memItemLeft" align="right" valign="top"><a id="ae58fd1f832f4d71fde0c8feb2f837d58"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#ae58fd1f832f4d71fde0c8feb2f837d58">update_rate_</a></td></tr>
<tr class="memdesc:ae58fd1f832f4d71fde0c8feb2f837d58"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update rate for sending and receiving data;. <br /></td></tr>
<tr class="separator:ae58fd1f832f4d71fde0c8feb2f837d58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d917ce8f4d6f43b3855dd3a48809fa7"><td class="memItemLeft" align="right" valign="top"><a id="a7d917ce8f4d6f43b3855dd3a48809fa7"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a7d917ce8f4d6f43b3855dd3a48809fa7">num_calls_</a></td></tr>
<tr class="memdesc:a7d917ce8f4d6f43b3855dd3a48809fa7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of times to call the planner. <br /></td></tr>
<tr class="separator:a7d917ce8f4d6f43b3855dd3a48809fa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60cae5753166db3a1d5600e21dc7a262"><td class="memItemLeft" align="right" valign="top"><a id="a60cae5753166db3a1d5600e21dc7a262"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a60cae5753166db3a1d5600e21dc7a262">algorithm_</a></td></tr>
<tr class="memdesc:a60cae5753166db3a1d5600e21dc7a262"><td class="mdescLeft">&#160;</td><td class="mdescRight">Algorithm for planner to run (rrt-connect or rrt-star-connect) <br /></td></tr>
<tr class="separator:a60cae5753166db3a1d5600e21dc7a262"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99c27e47add60e2a0303fd51d19908e1"><td class="memItemLeft" align="right" valign="top"><a id="a99c27e47add60e2a0303fd51d19908e1"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a99c27e47add60e2a0303fd51d19908e1">replan_time_limit_</a></td></tr>
<tr class="memdesc:a99c27e47add60e2a0303fd51d19908e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Time after which replanning is halted;. <br /></td></tr>
<tr class="separator:a99c27e47add60e2a0303fd51d19908e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b45b7415cdca9ec042f0619deee4447"><td class="memItemLeft" align="right" valign="top"><a id="a7b45b7415cdca9ec042f0619deee4447"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a7b45b7415cdca9ec042f0619deee4447">map_frame_</a></td></tr>
<tr class="memdesc:a7b45b7415cdca9ec042f0619deee4447"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handle for the map frame. <br /></td></tr>
<tr class="separator:a7b45b7415cdca9ec042f0619deee4447"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ce8a926b03bb78083a6a20e0851a05a"><td class="memItemLeft" align="right" valign="top"><a id="a4ce8a926b03bb78083a6a20e0851a05a"></a>
<a class="el" href="classFastTerrainMap.html">FastTerrainMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a4ce8a926b03bb78083a6a20e0851a05a">terrain_</a></td></tr>
<tr class="memdesc:a4ce8a926b03bb78083a6a20e0851a05a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Struct for terrain map data. <br /></td></tr>
<tr class="separator:a4ce8a926b03bb78083a6a20e0851a05a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeda69724f6100af1e961345ffbe129a8"><td class="memItemLeft" align="right" valign="top"><a id="aeda69724f6100af1e961345ffbe129a8"></a>
std::vector&lt; State &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#aeda69724f6100af1e961345ffbe129a8">body_plan_</a></td></tr>
<tr class="memdesc:aeda69724f6100af1e961345ffbe129a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Std vector containing the interpolated robot body plan. <br /></td></tr>
<tr class="separator:aeda69724f6100af1e961345ffbe129a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a029413a439d6621407f9e7d7020b18b5"><td class="memItemLeft" align="right" valign="top"><a id="a029413a439d6621407f9e7d7020b18b5"></a>
std::vector&lt; double &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a029413a439d6621407f9e7d7020b18b5">t_plan_</a></td></tr>
<tr class="memdesc:a029413a439d6621407f9e7d7020b18b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Std vector containing the interpolated time data. <br /></td></tr>
<tr class="separator:a029413a439d6621407f9e7d7020b18b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9494fb18caf34bde43db027b28d08e2"><td class="memItemLeft" align="right" valign="top"><a id="ac9494fb18caf34bde43db027b28d08e2"></a>
State&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#ac9494fb18caf34bde43db027b28d08e2">robot_start_</a></td></tr>
<tr class="memdesc:ac9494fb18caf34bde43db027b28d08e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Robot starting state. <br /></td></tr>
<tr class="separator:ac9494fb18caf34bde43db027b28d08e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c4fa0a4981d47552500e7fbe4053bb4"><td class="memItemLeft" align="right" valign="top"><a id="a9c4fa0a4981d47552500e7fbe4053bb4"></a>
State&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a9c4fa0a4981d47552500e7fbe4053bb4">robot_goal_</a></td></tr>
<tr class="memdesc:a9c4fa0a4981d47552500e7fbe4053bb4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Robot goal state. <br /></td></tr>
<tr class="separator:a9c4fa0a4981d47552500e7fbe4053bb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50df2ef4bdaca844a07ece58a468de64"><td class="memItemLeft" align="right" valign="top"><a id="a50df2ef4bdaca844a07ece58a468de64"></a>
std::vector&lt; State &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a50df2ef4bdaca844a07ece58a468de64">state_sequence_</a></td></tr>
<tr class="memdesc:a50df2ef4bdaca844a07ece58a468de64"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sequence of discrete states in the plan. <br /></td></tr>
<tr class="separator:a50df2ef4bdaca844a07ece58a468de64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66b5df244875b0209ceb2c634d93c050"><td class="memItemLeft" align="right" valign="top"><a id="a66b5df244875b0209ceb2c634d93c050"></a>
std::vector&lt; Action &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a66b5df244875b0209ceb2c634d93c050">action_sequence_</a></td></tr>
<tr class="memdesc:a66b5df244875b0209ceb2c634d93c050"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sequence of discrete actions in the plan. <br /></td></tr>
<tr class="separator:a66b5df244875b0209ceb2c634d93c050"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6ca89bb990b3f2c6a94c34322ae24af"><td class="memItemLeft" align="right" valign="top"><a id="ad6ca89bb990b3f2c6a94c34322ae24af"></a>
std::vector&lt; std::vector&lt; double &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#ad6ca89bb990b3f2c6a94c34322ae24af">cost_vectors_</a></td></tr>
<tr class="memdesc:ad6ca89bb990b3f2c6a94c34322ae24af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vector of cost instances in each planning call (nested STL vectors) <br /></td></tr>
<tr class="separator:ad6ca89bb990b3f2c6a94c34322ae24af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a121db12e5a6ba27425a468260108caf3"><td class="memItemLeft" align="right" valign="top"><a id="a121db12e5a6ba27425a468260108caf3"></a>
std::vector&lt; std::vector&lt; double &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#a121db12e5a6ba27425a468260108caf3">cost_vectors_times_</a></td></tr>
<tr class="memdesc:a121db12e5a6ba27425a468260108caf3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vector of time instances of cost data for each planning call (nested STL vectors) <br /></td></tr>
<tr class="separator:a121db12e5a6ba27425a468260108caf3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae431f7b02f8c58d4fa354faeed6714e9"><td class="memItemLeft" align="right" valign="top"><a id="ae431f7b02f8c58d4fa354faeed6714e9"></a>
std::vector&lt; double &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#ae431f7b02f8c58d4fa354faeed6714e9">solve_time_info_</a></td></tr>
<tr class="memdesc:ae431f7b02f8c58d4fa354faeed6714e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vector of solve times for each planning call. <br /></td></tr>
<tr class="separator:ae431f7b02f8c58d4fa354faeed6714e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adfbd439f7eeadbf40694ba90bcd566e4"><td class="memItemLeft" align="right" valign="top"><a id="adfbd439f7eeadbf40694ba90bcd566e4"></a>
std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlobalBodyPlanner.html#adfbd439f7eeadbf40694ba90bcd566e4">vertices_generated_info_</a></td></tr>
<tr class="memdesc:adfbd439f7eeadbf40694ba90bcd566e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vector of number of vertices for each planning call. <br /></td></tr>
<tr class="separator:adfbd439f7eeadbf40694ba90bcd566e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A global body planning class for legged robots. </p>
<p><a class="el" href="classGlobalBodyPlanner.html" title="A global body planning class for legged robots. ">GlobalBodyPlanner</a> is a container for all of the logic utilized in the global body planning node. This algorithm requires an height map of the terrain as a GridMap message type, and will publish the global body plan as a BodyPlan message over a topic. It will also publish the discrete states used by the planner (from which the full path is interpolated). </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ae1cc3ec1e77b13cdf679267c4a8e55b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1cc3ec1e77b13cdf679267c4a8e55b4">&#9670;&nbsp;</a></span>GlobalBodyPlanner()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GlobalBodyPlanner::GlobalBodyPlanner </td>
          <td>(</td>
          <td class="paramtype">ros::NodeHandle&#160;</td>
          <td class="paramname"><em>nh</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructor for <a class="el" href="classGlobalBodyPlanner.html" title="A global body planning class for legged robots. ">GlobalBodyPlanner</a> Class. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">nh</td><td>Node handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Constructed object of type <a class="el" href="classGlobalBodyPlanner.html" title="A global body planning class for legged robots. ">GlobalBodyPlanner</a> </dd></dl>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a5ce4b6fab5302a7b110850deef679806"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5ce4b6fab5302a7b110850deef679806">&#9670;&nbsp;</a></span>addBodyStateToMsg()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void GlobalBodyPlanner::addBodyStateToMsg </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">State&#160;</td>
          <td class="paramname"><em>body_state</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">global_body_planner::BodyPlan &amp;&#160;</td>
          <td class="paramname"><em>body_plan_msg</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Update the body plan with the current plan. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">t</td><td>Time of state in trajectory </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">body_state</td><td>Body state </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">body_plan_msg</td><td>Body plan message </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a209eb08a4c8c9e51b88c4039a6cfbd12"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a209eb08a4c8c9e51b88c4039a6cfbd12">&#9670;&nbsp;</a></span>terrainMapCallback()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void GlobalBodyPlanner::terrainMapCallback </td>
          <td>(</td>
          <td class="paramtype">const grid_map_msgs::GridMap::ConstPtr &amp;&#160;</td>
          <td class="paramname"><em>msg</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Callback function to handle new terrain map data. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">msg</td><td>the message contining map data </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>include/global_body_planner/<a class="el" href="global__body__planner_8h_source.html">global_body_planner.h</a></li>
<li>src/global_body_planner.cpp</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
